The computer systems of the past usually included a single mainframe computer and several non-programmable terminals. After a non-programmable terminal was connected to the mainframe computer, it was rarely moved. Therefore, even though the amount of effort necessary to connect the two devices was often significant, the task was not thought to be overly burdensome since it was seldom performed.
Unlike the computer systems of the past, modern day computer systems often involve a complex network of computers. The computer systems of modern day computer networks come in many different shapes and sizes. Large mainframe computers can be linked with other mainframe computers and/or smaller mid-sized computers. Similarly, mid-sized computers, usually called mid-range computers or minicomputers, can themselves be combined to form a computer network. Unlike their predecessors, the terminals of today--are powerful personal computers (also known as programmable workstations) which are also full function computer systems. Since the modern day terminal is a self-contained computer system, the distinction between network components which are considered computers and those which are considered terminals has become blurred. For this reason, the different entities that make up a computer network are now called nodes.
A variety of high level network protocols have been developed to allow the individual nodes of a computer network to communicate with one another. Examples of these high level protocols include: Advanced Program to Program Communications (APPC), Transmission Control Protocol/Internet Protocol (TCP/IP), Open Systems Interconnection (OSI), Network Basic Input/Output System (NETBIOS), and Digital Equipment Corporation's "DecNet." However, inherent in every network protocol is the need for individual nodes--be "configured" with sufficient information to communicate with other nodes in the network. Configuration information can be broken out into three categories: location information, negotiation information, and capability information. Location information is used to address a particular node in much the same way as postal addresses are used to specify a particular residence or business. Negotiation information is the network protocol used by a particular node or nodes. In some sense, protocols are--analogous to the various languages and dialects used by human beings. Understanding what protocol is to be used allows the nodes of a network to "speak the same language." Capability information is used to inform individual users of which nodes perform which function or functions
Without configuration information, the addition of a new node to a network is, in some sense, meaningless. Stated another way, the new node cannot be of benefit to the network and the network cannot be of benefit to the new node if the new node and the network cannot communicate. Hence, the absence of this information means that end users are unable to fully utilize the very network resources which were put in place to benefit them. It is easy to see that this is an important concern for network users--and owners a like.
Maintaining this configuration information is a difficult task. Large computer networks are often made up of several smaller networks (called sub-networks) which themselves may include a significant number of nodes. The problem is exacerbated when one remembers that even minor changes to the network may require a significant amount of work. For example, whenever a node changes system parameters or becomes accessible through an additional path, reconfiguration of the entire network may be required to ensure that all the nodes of the network discover the new configuration information for the changed node. Conventional solutions to this problem are rigid, time consuming, and usually involve a large amount of human interaction. Whenever a change to the network is required, technicians manually configure (or reconfigure) each node of the network to include the updated configuration information.
An automated solution to a related problem is IBM's Remote Program Load (RPL) protocol for Token-Ring Networks. RPL is used on networks to boot medialess Personal Computers (PC). When a medialess PC that is running RPL is initially connected to a network, it requests location information from any node which can supply it with a boot program. Included in this request is location information about the medialess PC (hereafter medialess node). The medialess node need not know the whereabouts of any of these "loading" nodes because it simply sends out a "broadcast message" requesting that any node that is capable of supplying a boot program respond with location information. When a loading node receives the request, it responds with its own location information. The medialess node then accepts the first response and proceeds to use the loading node's location information to request that the subject loading node provide it with a boot program. The loading node responds by sending the requested boot program to the medialess node. This accomplished, the medialess node then boots itself with the newly acquired boot program.
Although RPL is sufficient to provide medialess nodes with boot programs, it does not solve the complex configuration problem inherent in today's computer networks. The configuration information provided by RPL includes only location, and in some sense, capability information about one other node. Further, once the medialess node is fully loaded and running, it discards even this minor amount of information. With regard to other nodes of the network, RPL only provides location information about the medialess node to the loading node. RPL does not provide the loading node, nor the other nodes, with configuration about one another. With regard to capability information, RPL provides nothing more than location information about a particular node that can provide a boot program.